Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MoE][PyTorch] Add mask-based MoE permutation #1373

Merged
merged 11 commits into from
Jan 27, 2025

Conversation

hxbai
Copy link
Contributor

@hxbai hxbai commented Dec 13, 2024

Description

Add mask-based token permutation and local chunk permutation fused kernels. These kernels are implemented with OpenAI Triton.

Related commit in Megatron-LM NVIDIA/Megatron-LM@ac0474d

Fixes # (issue)

Type of change

  • Documentation change (change only to the documentation, either a fix or a new content)
  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Infra/Build change
  • Code refractor

Changes

Please list the changes introduced in this PR:

  • Non-breaking API changes in te.pytorch.permutation.moe_permute and te.pytorch.permutation.moe_unpermute
  • Add new APIs of te.pytorch.permutation.moe_sort_chunks_by_indices

Checklist:

  • I have read and followed the contributing guidelines
  • The functionality is complete
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes

@hxbai hxbai changed the title [MoE][Common/PyTorch] Add mask-based MoE permutation [MoE][PyTorch] Add mask-based MoE permutation Dec 13, 2024
@phu0ngng phu0ngng self-requested a review January 8, 2025 15:20
transformer_engine/pytorch/permutation.py Outdated Show resolved Hide resolved
transformer_engine/pytorch/permutation.py Outdated Show resolved Hide resolved
transformer_engine/pytorch/permutation.py Outdated Show resolved Hide resolved
tests/pytorch/test_permutation.py Show resolved Hide resolved
tests/pytorch/test_permutation.py Show resolved Hide resolved
@timmoon10 timmoon10 self-requested a review January 8, 2025 21:57
@yanring
Copy link

yanring commented Jan 21, 2025

Hi @timmoon10 @phu0ngng, could you help take another look at this? We intend to incorporate this optimization into mcore v0.11 (6th Feb). Thanks a lot!

@phu0ngng
Copy link
Collaborator

/te-ci pytorch

Copy link
Collaborator

@timmoon10 timmoon10 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall LGTM. My suggestions are stylistic.

tests/pytorch/test_permutation.py Outdated Show resolved Hide resolved
tests/pytorch/test_permutation.py Outdated Show resolved Hide resolved
tests/pytorch/test_permutation.py Show resolved Hide resolved
Signed-off-by: Hongxiao Bai <[email protected]>
@phu0ngng phu0ngng merged commit 2fce82b into NVIDIA:main Jan 27, 2025
14 checks passed
youngeunkwon0405 pushed a commit to youngeunkwon0405/TransformerEngine that referenced this pull request Jan 27, 2025
* add mask-based moe permutation

* change moe_chunk_permute to moe_sort_chunks_by_indices

* fix __all__ in pytorch/permutation.py

* fix func/var names and typos; update tols in UT

---------

Signed-off-by: Hongxiao Bai <[email protected]>
Co-authored-by: Phuong Nguyen <[email protected]>
Co-authored-by: Tim Moon <[email protected]>
Signed-off-by: Youngeun Kwon <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants